package com.newviews.tcmip.service.inf;

import com.newviews.tcmip.common.model.PageModel;
import com.newviews.tcmip.common.model.ResultModel;
import com.newviews.tcmip.pojo.po.*;
import com.baomidou.mybatisplus.extension.service.IService;
import com.newviews.tcmip.pojo.vo.EtcmCommonBaseInfoRespVO;
import com.newviews.tcmip.pojo.vo.index.EtcmIndexStatusticsRespVO;
import com.newviews.tcmip.web.vo.combin.HerbHerbPageReqVo;
import com.newviews.tcmip.web.vo.combin.HerbHerbReqVo;
import com.newviews.tcmip.web.vo.combin.NetworkStatisticsRespVo;
import com.newviews.tcmip.web.vo.etcmherb.HerbIngrVo;
import com.newviews.tcmip.web.vo.etcmpx.*;
import org.apache.ibatis.annotations.Select;
import org.springframework.web.bind.annotation.RequestParam;

import java.util.List;
import java.util.Map;

/**
 * <p>
 * 处方基本信息库 服务类
 * </p>
 *
 * @author lxc
 * @since 2024-02-29
 */
public interface EtcmPxServiceInf extends IService<EtcmPxPo> {
    ResultModel<PageModel<Map<String,String>>> search(String searchType, String content,String langCode);
    ResultModel<PageModel<Map<String,String>>> getIndexPage(String prescriptionType, String dosageForm,String prepositionContent, String content, String langCode,String uiTypeCode, Integer pageNo, Integer pageSize, String sortType);
    ResultModel<EtcmIndexStatusticsRespVO> getStatisticsPx(String prescriptionType, String dosageForm, String prepositionContent, String langCode, String uiTypeCode);
    List<Map<String,String>> getIndexPageDownload(String prescriptionType, String dosageForm,String prepositionContent, String content, String langCode,String uiTypeCode,String sortType);



    ResultModel<PageModel<Map<String,String>>> getPage(String prescriptionType, String dosageForm, String content, String langCode,String uiTypeCode, Integer pageNo, Integer pageSize, String sortType);
    ResultModel<EtcmStatisticsRespVo> statisticsPx(String content);

    List<Map<String,String>> getPxDownload(String prescriptionType, String dosageForm, String content, String langCode,String uiTypeCode,String sortType);



    ResultModel<List<EtcmCommonBaseInfoRespVO>>getDetails(String prescriptionId, String langCode, String uiTypeCode, String content);
    List<Map<String,String>> getPxDetails(String pxId, String content, String langCode,String uiTypeCode);



    ResultModel<PageModel<Map<String,String>>> getIngredient(String ingrHia, String ingrBbb, String ingrCaco2,String ingrHob,String content, String langCode, String uiTypeCode, String prescriptionId, Integer pageNo, Integer pageSize, String sortType);
    ResultModel<PxIngrStatisticsRespVo> getIngredientStatistics(String content, String prescriptionId);
    List<Map<String, String>> getIngredientDownload(String ingrHia, String ingrBbb, String ingrCaco2, String ingrHob, String content, String langCode, String uiTypeCode, String prescriptionId, String sortType);




    ResultModel<PageModel<Map<String,String>>> getTarget( String targetType,String content, String langCode, String uiTypeCode, String prescriptionId, Integer pageNo, Integer pageSize, String sortType);
    //ResultModel<PageModel<PxTargetRespVo>> getTarget(String targetType, String content, String langCode, String uiTypeCode, String prescriptionId, Integer pageNo, Integer pageSize, String sortType);

    List<Map<String, String>> getTargetDownload(String type, String content, String langCode, String uiTypeCode, String prescriptionId, String sortType);
    ResultModel<Map<String, String>> getTargetStatistics(String content, String prescriptionId);




    ResultModel<PageModel<Map<String,String>>> getExperimental( String content, String prescriptionId, String langCode, String uiTypeCode, Integer pageNo, Integer pageSize,String sortType);

    List<Map<String,String>> getExperimentalList( String content, String prescriptionId, String langCode, String uiTypeCode,String sortType);




    ResultModel<NetworkStatisticsRespVo> networkStatistics(String prescriptionId, String langCode, String uiTypeCode);

    Map<String, String> getStringStringMap(String langCode, HerbIngrVo herbIngrVo, List<EtcmUiElPo> uiElNameList);

    Map<String, String> getStringStringMap(String langCode, EtcmIngrIngrPo etcmIngrIngrPo, List<EtcmUiElPo> uiElNameList);


    Map<String, String> getStringStringMap(String langCode, EtcmHerbHerbPo etcmHerbHerbPo, List<EtcmUiElPo> uiElNameList);



    Map<String, String> getStringStringMap(String langCode, PxDiseaseRespVo pxDiseaseRespVo, List<EtcmUiElPo> uiElNameList);

    Map<String, String> getStringStringMap(String langCode, EtcmHerbDiseasePo etcmHerbDiseasePo, List<EtcmUiElPo> uiElNameList);


    Map<String, String> getStringStringMap(String langCode, EtcmPxHerbPo etcmPxHerbPo, List<EtcmUiElPo> uiElNameList);


    Map<String, String> getStringStringMap(String langCode, EtcmIngrDiseasePo etcmIngrDiseasePo, List<EtcmUiElPo> uiElNameList);


    ResultModel<NetworkStatisticsRespVo> getHerbHerb(HerbHerbReqVo reqVo);


    ResultModel<PxNetworkStatisticsRespVo> getNetwork(HerbHerbPageReqVo reqVo,boolean isPxDisease,boolean isHerbDisease,boolean isIngrDisease,boolean isPxHerb,boolean isHerbHerb,boolean isIngrIngr,boolean isHerbIngr,int numberType);

    ResultModel<PxNetworkStatisticsRespVo> getNetworkTwo(HerbHerbPageReqVo reqVo,boolean isPxDisease,boolean isHerbDisease,boolean isIngrDisease,boolean isPxHerb,boolean isHerbHerb,boolean isIngrIngr,boolean isHerbIngr,int numberType,int combinType);

    PxNetworkStatisticsRespVo getPxNetworkStatisticsRespVoResultModel(String langCode, List<PxDiseaseRespVo> pxAndDiseaseList, List<EtcmHerbDiseasePo> herbAndDiseaseList,List<EtcmIngrDiseasePo> ingrAndDiseaseList,List<EtcmPxHerbPo> pxAndHerbList, List<EtcmHerbHerbPo> herbAndHerbList, List<EtcmIngrIngrPo> ingrAndIngrList, List<HerbIngrVo> herbAndIngrList);


    PageModel<Map<String,String>> getNetworkTablePage(String langCode, List<PxDiseaseRespVo> pxAndDiseaseList, List<EtcmHerbDiseasePo> herbAndDiseaseList, List<EtcmIngrDiseasePo> ingrAndDiseaseList, List<EtcmPxHerbPo> pxAndHerbList, List<EtcmHerbHerbPo> herbAndHerbList, List<EtcmIngrIngrPo> ingrAndIngrList, List<HerbIngrVo> herbAndIngrList, List<EtcmUiElPo> uiElNameList, Integer pageNo, Integer pageSize);

    ResultModel<PageModel<Map<String, String>>> getHerbHerbPage(HerbHerbPageReqVo reqVo);

    ResultModel<PageModel<Map<String, String>>> networkPage(String prescriptionId, String langCode, String uiTypeCode, Integer pageNo, Integer pageSize);

    ResultModel<PxNetworkStatisticsRespVo> getNetwork_ingr_ingr(HerbHerbPageReqVo reqVo,int numberType);



}
